<html>
    <head>
        <title>声明周期钩子</title>
    </head>
    <body>
        <script>
            // 实例生命周期钩子：
                    /*
                        每个Vue实例在被创建时都要记你过一系列的初始化过程-----例如，需要设置数据监听、编译模板、将实例挂载到DOM，并在数据发生改变时更新DOM等。
                        同时，在这个过程中也会运行一些叫做"生命周期钩子"的函数。
                        这给了用户在不同阶段添加自己的代码的机会。
                    */
                        // 比如， created钩子可以用来在一个实例创建之后执行代码：
                        new Vue({
                                data:{
                                    a:1
                                },
                                created:function(){
                                    // 'this'指向 vm实例 
                                }

                            });
                    /*
                        也有一些其他的钩子，在实例生命周期的不同阶段被调用,如： mounted、updated 的 destroyed.
                        生命周期钩子的 this 上下文指向调用它的实例。
                   */
                    
                    /*
                        ★、特别注意：
                                不要再选项的property或者回调上使用"箭头函数"，
                                eg:
                                    created:()=>console.log(this.a)
                                    或者
                                    vm.$watch('a',newValue=>this.myMethod())
                                不要这样用，因为“箭头函数”没有this，this会作为变量一直向上升级词法作用域，知道找到为止，经常导致
                                    Uncaught TypeError: Cannot read property of undefined 
                                    或
                                    Uncaught TypeError: this.myMethod is not a function 之类的错误。
                    */
        </script>
    </body>
</html>